/*
	File:		IEntity.h
	Author:		dmonroe
	Date:		11/27/2012
	Copyright:	Full Sail University

	Purpose:	Interface class for game objects
*/

#ifndef IENTITY_H
#define IENTITY_H

class IEntity
{
public:
	virtual ~IEntity( void )			// pure virtual causes a problem
	{	/* do nothing */	}

	// IEntity Interface:
	virtual void	Input	( float fElapsedTime )		= 0;
	virtual void	Update	( float fElapsedTime )		= 0;
	virtual void	Render	( float fElapsedTime )		= 0;

	virtual int		GetType			( void )			= 0;
	virtual bool	IsCollidable	( void )			= 0;
	virtual bool	OnCollision		( const IEntity* )	= 0;

	virtual void	AddRef	( void )					= 0;
	virtual void	Release	( void )					= 0;

	// Generic collision detection
	// (friend does nothing - implies a strong bond)
	friend	bool	IsColliding		( const IEntity*, const IEntity* );
};


#endif //IENTITY_H
